home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / silib / inc / sifdl.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-16  |  7.6 KB  |  283 lines

  1. #ifndef    _SIFDL_H
  2. #define    _SIFDL_H
  3.  
  4. #ifndef    _SIDLG_H
  5. #    include    <sidlg.h>
  6. #endif
  7. #ifndef    _SISBAR_H
  8. #    include    <sisbar.h>
  9. #endif
  10. #ifndef    _SIGLN_H
  11. #    include    <sigln.h>
  12. #endif
  13.  
  14. #define    FDL_LEN_FN    (256)
  15.  
  16. typedef struct _fdlfile_t            /* ファイル情報構造体    */
  17. {
  18.     struct _fdlfile_t    *next;
  19.     int                    no;            /* 番号                */
  20.     unsigned short        stt;        /* 属性                */
  21.     unsigned char        mark;        /* 選択マーク        */
  22.     unsigned char        att;        /* 属性                */
  23.     unsigned short        time;        /* 時刻                */
  24.     unsigned short        date;        /* 日付                */
  25.     long                siz;        /* ファイルサイズ    */
  26.     char                name[14];    /* ファイル名        */
  27. } FDLFILE_T;
  28.  
  29. #define    FDLFILE_STT_PICKUP    (0x0001)
  30.  
  31. typedef struct _fdlcfn_t        /* クリップファイル名    */
  32. {
  33.     struct _fdlcfn_t    *next;
  34.     int                    no;            /* クリップ番号    */
  35.     char                mark;        /* マーク        */
  36.     unsigned char        att;        /* 属性            */
  37.     unsigned short        stt;        /* 状態            */
  38.     char               *fn;
  39. } FDLCFN_T;
  40.  
  41. #define    FDLCFN_HASH_MAX    (16)    /* ハッシュテーブル数    */
  42.  
  43. typedef struct _fdldtree_t            /* ディレクトリツリー構造体    */
  44. {
  45.     struct _fdldtree_t    *prev, *next;
  46.     struct _fdldtree_t    *child, *parent;
  47.  
  48.     int                    level;                /* ルートからの階層    */
  49.     unsigned short        stt;                /* 属性                */
  50.     unsigned char        mark;                /* 選択マーク        */
  51.     unsigned char        att;                /* 属性                */
  52.     unsigned short        time;                /* 時刻                */
  53.     unsigned short        date;                /* 日付                */
  54.     char                name[14];            /* ファイル名        */
  55.     char                dir[FDL_LEN_FN];    /* ディレクトリ名    */
  56.     int                    numDir;                /* サブディレクトリ配下    */
  57. } FDLDTREE_T;
  58.  
  59. #define    FDLDTREE_STT_READMK        (0x0001)    /* 読込マーク    */
  60.  
  61.  
  62. typedef struct        /* 文字列入力ダイアログ構造体    */
  63. {
  64.     WIN_T           *win;
  65.     EV_T           *ev;
  66.     FRAME_T            fr;
  67.     GLN_T           *gln;
  68. } FDLDLG_INP_T;
  69.  
  70. typedef struct    /* ドライブ情報ダイアログ構造体    */
  71. {
  72.     WIN_T           *win;
  73.     EV_T           *ev;                /* ドライブイベント        */
  74.     FRAME_T            fr;
  75.  
  76.     unsigned long    sizFree;        /* 残り容量                */
  77.     unsigned long    sizCapa;        /* 総容量                */
  78.     char            namVol[16];        /* ディスクボリューム名    */
  79.     FRAME_T            frDrv;            /* ドライブ一覧表示枠    */
  80. } FDLDLG_DRV_T;
  81.  
  82. typedef struct                        /* ディレクトリセレクタ    */
  83. {
  84.     EV_T           *ev;
  85.     SB_T           *sb;
  86.     FRAME_T            fr;
  87.  
  88.     int                numDir;
  89.     FDLFILE_T      **dirTbl;
  90.     int                nDspX, nDspY;        /* 縦横表示数                */
  91.     int                numDsp;                /* 表示オフセット            */
  92.     int                ofsDsp;                /* 表示オフセット            */
  93.     int                posCur;                /* カーソル位置(表示位置)    */
  94. } FDLLST_DIR_T;
  95.  
  96. typedef struct                /* ファイルセレクタ    */
  97. {
  98.     EV_T           *ev;
  99.     SB_T           *sb;
  100.     FRAME_T            fr;
  101.  
  102.     int                numTbl;                /* テーブルのファイル数        */
  103.     FDLFILE_T      **fileTbl;
  104.     int                posDsp;                /* 表示先頭位置                */
  105.     int                numDsp;                /* 表示数                    */
  106.     int                ofsDsp;                /* 表示オフセット            */
  107.     int                posCur;                /* カーソル位置(表示位置)    */
  108. } FDLLST_FILE_T;
  109.  
  110. typedef struct                /* ファイルセレクタ    */
  111. {
  112.     WIN_T           *win;
  113.     EV_T           *ev;
  114.     FRAME_T            fr;
  115.     char            dir[FDL_LEN_FN];
  116.  
  117.     int                numFile;            /* 総ファイル数            */
  118.     FDLFILE_T       *fileTop;
  119.     FDLFILE_T       *fileLast;
  120.  
  121.     FDLLST_DIR_T    lstdir;
  122.     FDLLST_FILE_T    lstfile;
  123. } FDLDLG_LST_T;
  124.  
  125. typedef struct                            /* ディレクトリツリー    */
  126. {
  127.     WIN_T           *win;
  128.     EV_T           *ev;
  129.     EV_T           *evTree;
  130.     SB_T           *sb;
  131.     FRAME_T            fr;
  132.  
  133.     int                numTree;
  134.     FDLDTREE_T      *treeTbl;
  135.     int                numDspX, numDspY;    /* 縦横表示数                */
  136.     int                posCur;                /* カーソル位置                */
  137.  
  138.     FRAME_T            frScn;                /* ディレクトリ一覧表示枠    */
  139. } FDLDLG_DTR_T;
  140.  
  141. typedef struct _fdldrh_t            /* ディレクトリヒストリ    */
  142. {
  143.     struct _fdldrh_t    *next;
  144.     char                *dir;
  145. } FDLDRH_T;
  146.  
  147. typedef struct         /* ディレクトリヒストリ    */
  148. {
  149.     WIN_T           *win;
  150.     EV_T           *ev;
  151.     FRAME_T            fr;
  152.  
  153.     int            maxHis;
  154.     FDLDRH_T   *his;
  155.     int            numHis;
  156.     int            posHis;
  157.     int            posCur;
  158.  
  159.     FRAME_T            frScn;
  160. } FDLDLG_DRH_T;
  161.  
  162. typedef struct                            /* 情報表示スクリーン    */
  163. {
  164.     WIN_T           *win;
  165.     EV_T           *ev;
  166.     FRAME_T            fr;
  167.     char            fn[FDL_LEN_FN];        /* タイトル表示用    */
  168.  
  169.     FTSDAT_T       *fts;
  170.     int                xs, ys;
  171.     int                typ;
  172.     size_t            sizBuf;
  173.     size_t            sizFile;
  174.     char           *buf;                /* バッファ                    */
  175.     FDLFILE_T       *fileTop;
  176.     void           *scndsp;                /* 表示関数                    */
  177.     void           *ptr;                /* ユーザー登録関数用        */
  178.  
  179.     FRAME_T            frScn;                /* ディレクトリ一覧表示枠    */
  180.     int                on;
  181. } FDLDLG_SCN_T;
  182.  
  183. typedef struct            /* ファイルクリップ    */
  184. {
  185.     WIN_T           *win;
  186.     EV_T           *ev;
  187.     EV_T           *evClp;
  188.     SB_T            *sb;
  189.  
  190.     int                numCfn;
  191.     FDLCFN_T      **cfnTbl;
  192.     int                posDsp;
  193.     int                numDsp;
  194.     int                posCur;
  195.  
  196.     FRAME_T            frScn;                /* ディレクトリ一覧表示枠    */
  197. } FDLDLG_CLP_T;
  198.  
  199. typedef struct        /* ファイルダイアログ構造体    */
  200. {
  201.     unsigned int    att;                /* 属性                */
  202.     unsigned int    stt;                /* ステータス        */
  203.  
  204.     int                drv;                /* ドライブ            */
  205.     char            dir[FDL_LEN_FN];    /* ディレクトリ        */
  206.     char           *wild;                /* ワイルドカード    */
  207.     char            fn[FDL_LEN_FN];        /* ファイル名        */
  208.     int                sort;                /* ソート種別        */
  209.     char           *title;                /* タイトル            */
  210.     int                error;                /* エラーコード        */
  211.  
  212.     FDLDTREE_T       *treeRoot;            /* ツリー構造ルート    */
  213.  
  214.     int                numCfn;                /* クリップファイルの数    */
  215.     FDLCFN_T       *cfnHashTbl[FDLCFN_HASH_MAX];
  216.     char          **cfnFnTbl;
  217.  
  218.     EV_T           *ev;                    /* イベント                */
  219.     int                curDlg;                /* カレントダイアログ    */
  220.     FDLDLG_INP_T    dlgInp;                /* 文字列入力部            */
  221.     FDLDLG_DRV_T    dlgDrv;                /* ドライブ情報            */
  222.     FDLDLG_LST_T    dlgLst;                /* ファイルセレクタ        */
  223.     FDLDLG_DTR_T    dlgDtr;                /* ディレクトリツリー    */
  224.     FDLDLG_DRH_T    dlgDrh;                /* ディレクトリヒストリ    */
  225.     FDLDLG_SCN_T    dlgScn;                /* スクリーン            */
  226.     FDLDLG_CLP_T    dlgClp;                /* クリップ                */
  227. } FDL_T;
  228.  
  229. extern int        FDL_init(void);
  230. extern void        FDL_term(void);
  231.  
  232. extern FDL_T   *FDL_open(void);
  233. extern void        FDL_close(FDL_T *fdl);
  234.  
  235. extern int        FDL_setAtt(FDL_T *fdl,unsigned int att);
  236. extern int        FDL_setStt(FDL_T *fdl,unsigned int stt);
  237. extern int        FDL_setDrv(FDL_T *fdl, int drv);
  238. extern int        FDL_setDir( FDL_T *fdl, CONST char *dir);
  239. extern int        FDL_setWild(FDL_T *fdl,CONST char *wild);
  240. extern int        FDL_setFn(FDL_T *fdl, CONST char *fn);
  241. extern int        FDL_setSort(FDL_T *fdl, int sort);
  242. extern int        FDL_setTitle( FDL_T *fdl, CONST char *form, ... );
  243.  
  244. extern CONST char  *FDL_getFn(FDL_T *fdl);
  245. extern CONST char  *FDL_getDir( FDL_T *fdl );
  246. extern int            FDL_getClipTbl( FDL_T *fdl, int *numFn, char **fnTbl[] );
  247.  
  248. extern int        FDL_start( FDL_T *fdl );
  249.  
  250. extern FDLCFN_T    *FDL_clip_getCfn( FDL_T *fdl, CONST char *fn);
  251. extern int        FDL_isClip( FDL_T *fdl, CONST char *fn);
  252. extern int        FDL_clip_setFn( FDL_T *fdl, CONST char *fn );
  253. extern int        FDL_clip_unsetFn(FDL_T *fdl, CONST char *fn);
  254. extern void        FDL_clip_clear( FDL_T *fdl );
  255.  
  256. extern int        FDL_initColWork(void);
  257.  
  258. /*    属性    ------------------------------------------------------------*/
  259. #define    FDLATT_SINGLE        (0x0000_0001)    /* ファイルをひとつだけ選択/指定        */
  260. #define    FDLATT_MULTI        (0x0000_0002)    /* 複数選択/指定                        */
  261. #define    FDLATT_PATH            (0x0000_0003)    /* ディレクトリ選択/指定                */
  262. #define    FDLATT_DIRIGN        (0x0000_0080)    /* サブディレクトリの選択/指定を禁止    */
  263. #define    FDLATT_DUPIGN        (0x0000_0800)    /* 同一ファイル1の選択を禁止する        */
  264. #define    FDLATT_EXIST        (0x0000_8000)    /* 存在するファイルのみ選択可能            */
  265. #define    FDLATT_SIDEWORK        (0x0001_0000)    /* サイドーク                            */
  266. #define    FDLATT_DOSCALL        (0x0002_0000)    /* DOS コマンド                            */
  267. #define    FDLATT_EXTIGN        (0x0004_0000)    /* 拡張メニュー禁止                        */
  268.  
  269. /*    sort    ------------------------------------------------------------*/
  270. #define    FDLSORT_OFF            (0)            /* ソートなし        */
  271. #define    FDLSORT_FILE        (1)            /* ファイル名        */
  272. #define    FDLSORT_SUB            (2)            /* 拡張子            */
  273. #define    FDLSORT_DATE        (3)            /* 日付                */
  274. #define    FDLSORT_SIZE        (4)            /* サイズ            */
  275. #define    FDLSORT_RVS            (0x80)        /* 昇順/降順        */
  276. #define    FDLSORT_DIRBIT        (0x60)
  277. #define    FDLSORT_DIRTOP        (0x00)        /* ディレクトリ先頭    */
  278. #define    FDLSORT_DIRLAST        (0x20)        /* ディレクトリ最後    */
  279. #define    FDLSORT_DIROFF        (0x40)        /* ディレクトリ        */
  280.  
  281.  
  282. #endif
  283.